<?php
// +----------------------------------------------------------------------
// | ThinkPHP
// +----------------------------------------------------------------------
// | Copyright (c) 2008 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
// $Id$

/**
 +------------------------------------------------------------------------------
 * ThinkPHP公共文件
 +------------------------------------------------------------------------------
 * @copyright  Copyright (c) 2005-2006 liu21st.com.  All rights reserved.
 * @author     liu21st <liu21st@gmail.com>
 * @version    $Id$
 +------------------------------------------------------------------------------
 */
if(version_compare(PHP_VERSION,'5.0.0','<') ) {
    die('ThinkPHP require PHP > 5.0 !');
}
// 记录开始运行时间
$GLOBALS['_beginTime'] = microtime(TRUE);

// ThinkPHP系统目录定义
if(!defined('THINK_PATH'))		define('THINK_PATH', dirname(__FILE__));
if(!defined('APP_NAME'))		define('APP_NAME', md5(THINK_PATH));
if(!defined('APP_PATH'))			define('APP_PATH', dirname(THINK_PATH).'/'.APP_NAME);
if(!defined('RUNTIME_PATH')) define('RUNTIME_PATH',APP_PATH.'/Runtime/');

if(file_exists(RUNTIME_PATH.'~runtime.php')) {
    // 加载框架核心缓存文件
    // 如果有修改核心文件请删除该缓存
    require RUNTIME_PATH.'~runtime.php';
}else{
    // 加载运行编译需要的公共函数文件
    require THINK_PATH.'/Common/runtime.php';
    // 以下文件必须加载
    $runtime = array();
    $runtime[]	=	THINK_PATH.'/Common/defines.php';	// 定义文件
    $runtime[]	=	THINK_PATH.'/Common/functions.php'; // 系统函数
    if(version_compare(PHP_VERSION,'5.2.0','<') ) {
        // 加载兼容函数
        $runtime[]	=	 THINK_PATH.'/Common/compat.php';
    }
    $runtime[]	=	 THINK_PATH.'/Lib/Think/Core/Base.class.php';	 // 网站基类
    $runtime[]	=	 THINK_PATH.'/Lib/Think/Core/Think.class.php';  // 静态公共类
    $runtime[]	=	 THINK_PATH.'/Lib/Think/Core/Tag.class.php';  // 标签管理类
    $runtime[]	=	 THINK_PATH.'/Lib/Think/Core/App.class.php';	// 应用程序类

    // 加载核心文件
    foreach ($runtime as $file){
        if(file_exists($file)) {
            require $file;
        }
    }

    // 第一次运行检查项目目录结构 如果不存在则自动创建
    if(!file_exists(RUNTIME_PATH)) {
        // 创建项目目录结构
        buildAppDir();
    }
    // 检查缓存目录
    checkRuntime();
    // 生成核心缓存文件
    if(!defined('NO_CACHE_RUNTIME')) {
        $content	=	'';
        foreach ($runtime as $file){
            $content	.=	 php_strip_whitespace($file);
            if('?>' != substr($content,-2)) {
                $content .= ' ?>';
            }
        }
        file_put_contents(RUNTIME_PATH.'~runtime.php',$content);
        if(defined('ENCODE_RUNTIME_FILE')) {
            // 压缩编译缓存文件
            encode_file_contents(RUNTIME_PATH.'~runtime.php');
        }
        unset($content);
    }
    unset($runtime);
}

// 记录核心文件加载时间
$GLOBALS['_loadTime'] = microtime(TRUE);

// 执行应用
App::run();
?>